{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ca051ac5-da38-4f0e-b618-345bff24071d",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5e90062d-8185-43dc-a4bb-390a473a4a55",
   "metadata": {},
   "source": [
    "# 1. 随机抽样\n",
    "\n",
    "已知$X \\sim N(100, 3^2)$，随机抽样$50$个样本，计算均值、标准差\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "d807f765-ab71-4676-90d4-f86e85559de8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([104.87303609,  98.16473076,  98.41548474,  96.78109413,\n",
       "       102.59622289,  93.09538391, 105.23443529,  97.7163793 ,\n",
       "       100.95711729,  99.25188887, 104.38632381,  93.81957787,\n",
       "        99.03274839,  98.84783694, 103.40130833,  96.7003262 ,\n",
       "        99.48271538,  97.36642475, 100.12664124, 101.74844564,\n",
       "        96.69814247, 103.43417113, 102.70477216, 101.50748302,\n",
       "       102.70256785,  97.94881642,  99.63132932,  97.1926917 ,\n",
       "        99.19633576, 101.5910664 ,  97.92501774,  98.80973942,\n",
       "        97.9384819 ,  97.46438308,  97.98626161,  99.9620062 ,\n",
       "        96.64806895, 100.70324709, 104.97940653, 102.22613248,\n",
       "        99.42449334,  97.33711311,  97.75852512, 105.0773638 ,\n",
       "       100.15242326,  98.08901306, 100.57274645, 106.30076541,\n",
       "       100.36047686, 101.85160933])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = np.random.normal(loc=100, scale=3, size=50)\n",
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "id": "3ff7c995-e3e5-4e05-9c82-f9f567608034",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(99.92345545597703, 2.9382992440521436)"
      ]
     },
     "execution_count": 235,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.mean(), x.std(ddof=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "816ceed0-e002-4d90-a1b1-a639e55af550",
   "metadata": {},
   "source": [
    "计算总体标准差："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 220,
   "id": "1a2d1055-2a58-442f-9591-35c00c53dd6f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.908767848874408"
      ]
     },
     "execution_count": 220,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.std()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "23bd19ec-7b71-4054-b6f9-1038dc784cca",
   "metadata": {},
   "source": [
    "计算样本标准差："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 229,
   "id": "648bb386-7a5e-4a13-a47b-05cb688b313b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.4142135623730951\n",
      "1.5811388300841898\n"
     ]
    }
   ],
   "source": [
    "data = np.array([1, 2, 3, 4, 5])\n",
    "\n",
    "print(np.std(data))  # 计算样本标准差（无偏）\n",
    "print(np.std(data, ddof=1))  # 计算总体标准差\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "815c02a7-d1eb-4e3e-93b2-e1bce4af3bc9",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "id": "1a64247b-3dcd-4b2e-8437-81e599141767",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.9382992440521436"
      ]
     },
     "execution_count": 231,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.sqrt(((x-x.mean())**2).sum()/(x.shape[0] - 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e748b432-42f8-4615-859b-241be17cfdec",
   "metadata": {},
   "source": [
    "<br>\n",
    "\n",
    "使用随机种子(seed)，将随机“固定”住。\n",
    "> 当前基于图灵机、冯诺依曼体系的计算机系统都是确定性系统。<br>\n",
    "> 在没有外界随机因素输入情况下，所谓的随机都是“模拟”出来的伪随机。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "6afa48ae-98f2-428d-b5e1-fefe877b0f8a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([104.87303609,  98.16473076,  98.41548474,  96.78109413,\n",
       "       102.59622289,  93.09538391, 105.23443529,  97.7163793 ,\n",
       "       100.95711729,  99.25188887, 104.38632381,  93.81957787,\n",
       "        99.03274839,  98.84783694, 103.40130833,  96.7003262 ,\n",
       "        99.48271538,  97.36642475, 100.12664124, 101.74844564,\n",
       "        96.69814247, 103.43417113, 102.70477216, 101.50748302,\n",
       "       102.70256785,  97.94881642,  99.63132932,  97.1926917 ,\n",
       "        99.19633576, 101.5910664 ,  97.92501774,  98.80973942,\n",
       "        97.9384819 ,  97.46438308,  97.98626161,  99.9620062 ,\n",
       "        96.64806895, 100.70324709, 104.97940653, 102.22613248,\n",
       "        99.42449334,  97.33711311,  97.75852512, 105.0773638 ,\n",
       "       100.15242326,  98.08901306, 100.57274645, 106.30076541,\n",
       "       100.36047686, 101.85160933])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.seed(1)\n",
    "\n",
    "x = np.random.normal(size=50, loc=100, scale=3)\n",
    "x"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7a6466e5-bfb4-442e-a662-3071d417638a",
   "metadata": {},
   "source": [
    "# 【任务2】 绘制分布的频次直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "f59b7995-c2fc-432b-b2c1-602999c2c654",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "dbe820f3-90cf-4672-b36d-6c6a09fc78c5",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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hiRjx44dnn1///vfDbvdbixevNjYv3+/MXToUKNp06bGmTNnDMMwjKysLCMkJMR45plnjAMHDhjjxo0znE6nceTIEbMOxxQ16eGiRYuM+++/30hLSzP27t1rjBgxwggJCTEOHz5s0tH4Xk3693PPPPOMIcmIj4/3Zfl+oaY9nDp1qtG0aVNjxYoVRkZGhrFu3TojOzvbjEMxTU16uGXLFsNmsxlJSUnGF198YTz33HOG3W43/vGPf5h1OOUQdq+TL7/80pBk7N6927Nt1apVht1uN06ePOnZtmzZMqNbt25GZGQkYfcy1+rhsmXLjFtuucU4deqUeUX6sWv1b+DAgcbkyZM9+7744gtDkvHjjz+aUa5fmDp1qjFy5Ehj8+bN5d7ghw4datx3332e70+dOmU4HA5j+fLlhmEYxqRJk4w77rjDs7+kpMSIiIgwpk+f7qvy/UJNenj06FGvuYqLi43g4GAjJSXFJ7X7g5r076KMjAyjUaNGRv/+/W/KsFuTHmZmZhqBgYHG1q1bfV22X6lJDxcsWGDExsZ6zXfLLbcY77zzjk9qrwxuY7hODh48KEnq2LGjZ1uvXr1UWlqqzz77TJL0/fff67nnntOrr76qgIAAM8r0a9fq4RtvvKFHH31UDRo0MKdAP3et/j344INav369srKydP78eaWkpKh3795q0qSJSRWbb/bs2Vq5cqWio6PL7UtLS9OAAQM83zdo0ECxsbHauXPnFffb7XbFxcV59t8satLDyMhIr/F2u112u93rT75bXU36J0lut1tjxozRf/zHf+gXv/iFT2r2NzXp4YoVKxQbG6uePXv6rF5/VJMeDho0SEeOHNHmzZtVVlamFStWqE6dOurdu7fP6r8Wwu510qhRI0nSd99959lWUFAgSfrxxx9lGIYSEhI0YsQIdenSxZQa/V1FPczNzdW+ffsUERGhIUOGqGHDhurSpctNfY/k5a51Dv7+979Xly5ddOuttyokJER/+ctftHLlSlNq9RdX+0fnqVOndPr0aUVFRXltj4yM1LFjxyRJWVlZFe6/WdSkh5d75513VFBQ4FcfkrWtpv2bO3euzp07pwkTJtRqnf6sJj3cuXOnOnTooCeffFJNmzZV69at9fLLL8u4yf7eVk162KZNG7300kvq27ev6tSpo9GjR2vlypVq3LhxrdddWYTd6+TOO+/U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",
      "text/plain": [
       "<Figure size 800x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.random.normal(size=50, loc=100, scale=3)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8,3))\n",
    "ax.hist(x, bins=20, alpha=0.8, density=True,  ec=\"white\");\n",
    "ax.axvline(x.mean(), c=\"red\");\n",
    "ax.set_xlabel('x'); ax.set_ylabel('密度');"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dadd3cc1-dfae-4bbd-9785-839d6368ca0f",
   "metadata": {},
   "source": [
    "<br>\n",
    "\n",
    "加上理论整体分布的密度曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "3eb2a5fc-254e-456e-88bb-7421786d32bc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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3NxcwsLCMJsrXpug3o3Ims1mmjZtWuM/19/fX084A+hxN4Yed2PocTeGHndj6HE3Rk0+7n80EvsLw5ffEhERERG5FCqyIiIiIuKSVGSrmcVi4dlnn9U2uTVMj7sx9LgbQ4+7MfS4G0OPuzFq6+Ne7072EhEREZG6QSOyIiIiIuKSVGRFRERExCWpyIqIiIiIS1KRFRERERGXpCJbg3bs2MGAAQMIDAwkJCSEMWPGcObMGaNj1XmZmZmMGzeO4OBgAgICuOaaa9i1a5fRseqF9PR07rjjDv75z38aHaVOcjqdzJgxg7CwMHx8fBg+fDgZGRlGx6o34uPj6d69Oxs2bDA6Sr0QFxfHoEGD8Pb2pnHjxowbN47MzEyjY9ULy5Yto3Pnznh7exMZGck///lPastaASqyNSghIYEbb7yRH374gYULF7JmzRomTpxodKw67/nnn8fNzY1vvvmGlStXAjB48GBycnIMTlZ3nThxgilTptCqVSs++eQTo+PUWTExMcydO5d58+axevVq9u3bx5gxY4yOVedt376d2267jV69erF9+3aj49QbEydOpH///sTGxrJgwQLWrl3LXXfdZXSsemH//v1MnTqV2NhYpk2bxnPPPce8efOMjlXGKYaZM2eOs0GDBkbHqPOOHj16ztepqalOwLly5UqDEtV933zzjXPAgAHOH374wdmsWTPn888/b3SkOsdutztDQkKcr776avl1K1ascALOxMRE44LVA9OmTXOOHj3a+f333zsB5/r1642OVC/89rV80aJFTrPZ7MzPzzcoUf01dOhQ59/+9jejYzidTqfT3eAeXa85HA6Cg4ONjlHnRUZGnvO1l5cXAHa73Yg49cKQIUMYOnSo0THqtPj4eDIyMhg8eHD5df3798dsNhMbG0tUVJSB6eq2559/HpPJxJEjR4yOUq/83mu5w+EwKE39Vpv6i4qsAUpKSvjpp5+YO3eu5g4aYP78+VitVnr37m10lDrLZDIZHaHOS0xMBDinsFqtVkJDQ0lNTTUqVr2gf9/GczqdLFiwgF69euHt7W10nHojPz+fpUuXEhsby9q1a42OA6jI1rhBgwbxv//9D4DHHnuMO++80+BE9cu7777LtGnTmDt3LkFBQUbHEblkeXl5mM3m87aL9Pb2pqioyKBUItWvpKSEBx54gB9++IF169YZHafe8PLywmaz4efnx1tvvUWnTp2MjgToZK8qs3LlSkwm0+9exo4dW37cu+++y7Zt21iyZAmrV6/m6quvprS01LjgLq6yj3tRURH33XcfkyZNYt68eTzwwAPGhXZxlX3MpXpZLBYcDsd5rx9FRUUaoZI6KyUlhf79+/PNN9/w448/0qNHD6Mj1Rs7d+4kNjaW2bNn88gjj/D3v//d6EiARmSrzDXXXENubu7vfs/Dw6P8z5GRkURGRtK1a1d69uxJdHQ0a9asYdCgQTUVtU6pzONeWFjItddey/Hjx4mNjaVr1641GbHOqey/dale4eHhQNkbe/PmzQGw2Wykp6cTHR1tYDKR6nHw4EEGDBhAp06diIuLIzQ01OhI9Urbtm0ByqdzjB8/nmeeeQar1WpoLhXZKuLm5oavr+9F3cbdvezh10lHl64yj/szzzxDeno6W7ZsoUGDBjWUrO66lH/rUvW6deuG1Wpl9erVjB8/HqB8zlq/fv2MjCZSLe644w6uuuoqPvroI8xmfaBsJHd3d5xOZ63oLyqyNejBBx+kf//+tGnThrS0NKZPn07Lli0ZMGCA0dHqtCVLlnDHHXeQmZl5zuLZvr6+NG7c2MBkIpfOarUyceJEpk+fTmRkJL6+vkyePJkJEyZo/rfUOQkJCWzbto2nn366/ETHX4SGhhIQEGBQsrovJyeHBx98kNGjR9OkSRPi4uJ48sknGTlyZK0Y1FCRrUFhYWE88cQTHD9+nEaNGjF48GCee+658uWgpHocP36cl156iZdeeumc62+++WaWL19uUCqRP2/WrFkUFhYyYsQI3NzcGD16NDExMUbHEqlyx48fB+DWW28973uvv/46Dz74YE1Hqje8vLwoKSnhrrvuIjs7m2bNmvHQQw/x2GOPGR0NAJPTWUv2GBMRERERuQiaZCIiIiIiLklFVkRERERckoqsiIiIiLgkFVkRERERcUkqsiIiIiLiklRkRURERMQlqciKiIiIiEtSkRURERERl6QiKyIiIiIuSUVWRERERFySiqyIiIiIuCQVWRERERFxSSqyIiIu6u2338ZisXDkyBEASkpKaNOmDY8//rixwUREaojJ6XQ6jQ4hIiIXz+FwcPnll9OpUycWLlzIG2+8wUsvvcSePXvw8fExOp6ISLVTkRURcWGbNm2iX79+bNy4keuvv5733nuP66+/3uhYIiI1QkVWRMTFjR07ls8//5yBAweyfPlyo+OIiNQYzZEVEXFxDRo0oKCgAKvVanQUEZEapSIrIuLCNm/ezNtvv81nn33GsmXL+P77742OJCJSYzS1QETERRUXF9OtWzeuueYaXn31VR555BG+/fZbdu3ahZeXl9HxRESqnUZkRURc1AsvvMCJEyd49tlnAXj22WfJyMjghRdeMDiZiEjN0IisiIiIiLgkjciKiIiIiEtSkRURERERl6QiKyIiIiIuSUVWRERERFySiqyIiIiIuCQVWRERERFxSSqyIiIiIuKSVGRFRERExCWpyIqIiIiIS1KRFRERERGXpCIrIiIiIi5JRVZEREREXJKKrIiIiIi4pP8PSUoA4hSz2JoAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 800x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import scipy.stats as stats\n",
    "\n",
    "x = np.linspace(-3, 3)\n",
    "y = stats.norm.pdf(x)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8,3))\n",
    "ax.plot(x, y);\n",
    "ax.set_xlabel('x'); ax.set_ylabel('密度');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "dfd51c95-ec10-4aaf-bc5d-69ba4dd67e0c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 800x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.random.normal(size=50, loc=100, scale=3)\n",
    "\n",
    "xx = np.linspace(100 - 3*3, 100 + 3*3)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8,3))\n",
    "ax.hist(x, alpha=0.8, density=True,  ec=\"white\", label='经验')\n",
    "ax.plot(xx, stats.norm.pdf(xx, loc=100, scale=3), label='理论')\n",
    "ax.axvline(x.mean(), c=\"red\", label='均值线')\n",
    "ax.set_xlim(100 - 3*3, 100 + 3*3)\n",
    "ax.set_xlabel('x'); ax.set_ylabel('密度')\n",
    "ax.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94d66b19-b6ab-42e1-9c59-6488b118bc2b",
   "metadata": {},
   "source": [
    "# 【任务3】置信区间的实验\n",
    "\n",
    "\n",
    "我有个问题，我们在概率论与数理统计课中学习的置信区间，置信水平$\\alpha$是什么意思？\n",
    "\n",
    "<br>\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e2b7526-0f4d-4713-951d-4312a1c711e7",
   "metadata": {},
   "source": [
    "回忆一下估计正态分布$\\mu$的置信区间的推导过程\n",
    "\n",
    "存在随机变量$X \\sim N(\\mu, \\sigma^2)$，抽样$x$，有$n$个样本$x_i$，其中$i=1\\dots n$。\n",
    "\n",
    "从我们已知样本均值$\\bar{x}$的分布开始，因为$\\bar{x}$是$\\mu$的“很好”估计（无偏估计）\n",
    "$$\n",
    "\\bar{x} \\sim N\\left(\\mu, \\frac{\\sigma^2}{n}\\right)\n",
    "$$\n",
    "\n",
    "使用标准化分布\n",
    "$$\n",
    "\\frac{\\bar{x} - \\mu}{\\sigma/\\sqrt{n}} \\sim N(0,1)\n",
    "$$\n",
    "\n",
    "又因为我们不知道$\\sigma$，因此需要使用$s$估计$\\sigma$，得到\n",
    "\n",
    "$$\n",
    "\\frac{\\bar{x} - \\mu}{s / \\sqrt{n}} \\sim t(n-1)\n",
    "$$\n",
    "\n",
    "设置置信水平$\\alpha$，得到两个分位点作为范围最小和最大边界点。因此得到\n",
    "$$\n",
    "q_{\\frac{\\alpha}{2}} \\le \\frac{\\bar{x} - \\mu}{s / \\sqrt{n}} \\le q_{1-\\frac{\\alpha}{2}}\n",
    "$$\n",
    "\n",
    "整理得到\n",
    "$$\n",
    "\\bar{x} - q_{1-\\frac{\\alpha}{2}} s / \\sqrt{n}\n",
    "\\le \\mu \\le \n",
    "\\bar{x} + q_{1-\\frac{\\alpha}{2}} s / \\sqrt{n} \n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7431c2ad-690c-48e8-90f5-6968c60d6315",
   "metadata": {},
   "source": [
    "## (1) 计算样本的置信区间"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "89e5fde8-3423-4798-9ed9-7cfd7c93189a",
   "metadata": {},
   "outputs": [],
   "source": [
    "n = 50\n",
    "mu, sigma = 100, 3\n",
    "alpha = 0.05"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "670943fa-ace9-4a89-bc3d-026b6631fcfa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([104.87303609,  98.16473076,  98.41548474,  96.78109413,\n",
       "       102.59622289,  93.09538391, 105.23443529,  97.7163793 ,\n",
       "       100.95711729,  99.25188887, 104.38632381,  93.81957787,\n",
       "        99.03274839,  98.84783694, 103.40130833,  96.7003262 ,\n",
       "        99.48271538,  97.36642475, 100.12664124, 101.74844564,\n",
       "        96.69814247, 103.43417113, 102.70477216, 101.50748302,\n",
       "       102.70256785,  97.94881642,  99.63132932,  97.1926917 ,\n",
       "        99.19633576, 101.5910664 ,  97.92501774,  98.80973942,\n",
       "        97.9384819 ,  97.46438308,  97.98626161,  99.9620062 ,\n",
       "        96.64806895, 100.70324709, 104.97940653, 102.22613248,\n",
       "        99.42449334,  97.33711311,  97.75852512, 105.0773638 ,\n",
       "       100.15242326,  98.08901306, 100.57274645, 106.30076541,\n",
       "       100.36047686, 101.85160933])"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.seed(1)\n",
    "\n",
    "x = np.random.normal(size=50, loc=mu, scale=sigma)\n",
    "x"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5ec66738-c3c4-4288-adda-498401946c78",
   "metadata": {},
   "source": [
    "<br>\n",
    "\n",
    "$1-\\frac{\\alpha}{2}$分位点计算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "4d609da9-1f55-4fc5-87d6-1e8173af69df",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "81a1f334-bcc5-481e-84ef-e7b38f4852c9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.009575234489209"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import scipy.stats as stats\n",
    "\n",
    "stats.t.ppf(1 - alpha/2, df=n-1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "19fc2cbc-2132-4679-a35b-ca7853c28b5b",
   "metadata": {},
   "source": [
    "<br>\n",
    "\n",
    "样本的标准差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "63d08e5a-390f-44ef-a68c-8791b8dee4f7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.3810544642639817"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.std()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "007679bf-c20c-48ca-97f5-7112cf403d8d",
   "metadata": {},
   "source": [
    "计算边界误差限(margin of error)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "f8ed3565-9639-4ea1-9c34-17ec6e64ab32",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8266626749311773"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "moe = stats.t.ppf(1 - alpha/2, df=n-1)*x.std()/np.sqrt(n)\n",
    "moe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "cb64055e-e3e7-4473-86fe-16bc54a6d958",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(99.09679278104586, 100.7501181309082)"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.mean() - moe, x.mean() + moe"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e23a3fa3-068a-44e9-b6d8-aea4d5420e0c",
   "metadata": {},
   "source": [
    "## (2) 置信水平$\\alpha$的含义\n",
    "\n",
    "上面仅仅计算了一次置信区间。如果我们反复抽样，并计算样本的置信区间。<br>\n",
    "置信水平$\\alpha$，就是在这种反复抽样情况下，$\\mu$没有落在样本置信区间内的比例。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "id": "d47002a7-5c51-4287-ab8b-523121d96bd2",
   "metadata": {},
   "outputs": [],
   "source": [
    "def sim_ci(n=50, mu=100, sigma=3, alpha=0.05):\n",
    "    x = np.random.normal(size=n, loc=mu, scale=sigma)\n",
    "    sw = stats.t.ppf(1 - alpha/2, df=n-1) * x.std() / np.sqrt(n)\n",
    "    sx = x.mean()\n",
    "    return sx - sw, sx + sw"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "669a51bf-b31e-4fac-8add-69e1beb90299",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(99.05646606715902, 100.91359592030977)"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sim_ci()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "a2b1f103-90da-488b-9793-a788ff2c0d5a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 2)"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trials = np.array([sim_ci() for i in range(100)])\n",
    "trials.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "id": "2f29fc81-14bc-48cd-96d2-333511645873",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False, False, False, False,  True, False, False, False, False,\n",
       "       False, False, False, False, False, False,  True, False, False,\n",
       "       False, False, False, False, False, False, False, False, False,\n",
       "       False, False, False, False, False, False, False, False, False,\n",
       "       False, False, False, False, False, False, False, False, False,\n",
       "       False, False, False, False, False, False, False, False, False,\n",
       "       False, False, False, False, False, False, False,  True, False,\n",
       "       False, False, False, False, False, False, False, False, False,\n",
       "       False, False, False, False, False, False,  True, False, False,\n",
       "       False, False, False, False, False, False, False, False, False,\n",
       "       False, False,  True, False, False, False, False, False, False,\n",
       "       False])"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.array([mu < ci[0] or mu > ci[1]  for ci in trials])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "id": "951defdc-06b6-4ce7-ba6d-5f289ef7379f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.array([mu < ci[0] or mu > ci[1]  for ci in trials]).sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "id": "3d60f28b-b4b1-45fa-aee9-8dfbb4cb9d3f",
   "metadata": {},
   "outputs": [],
   "source": [
    "def simulate():\n",
    "    m = 100\n",
    "    trials = np.array([sim_ci() for i in range(m)])\n",
    "    return np.array([mu < ci[0] or mu > ci[1]  for ci in trials]).sum() / m\n",
    "    \n",
    "\n",
    "results = np.array([simulate() for i in range(200)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "id": "d35431a4-3ba9-47b0-a5a5-24fb71279cdd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.052 ± 0.022\n"
     ]
    }
   ],
   "source": [
    "print(f\"{results.mean():0.3f} ± {results.std():0.3f}\") "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "id": "01869aa7-25fc-4772-b5da-aeddabc13664",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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nohdu3b1jHndUawi+7Vx48ZoaWmJhx56KFpaWgb8GRwO0VDffm0wXX/99enEE09MjzzySHr88cfTaaedlq677rrU1dWV3ve+96XvfOc7KaXf31982LBhafHixamtrS0tWLAgNTQ0pI6OjpTS728PPGLEiDR//vzU1taWlixZko455ph+v2ODw1NUzz72sY+lCy64IG3evLnX9vrbNHJ4iurX6910001u6VwGRfXr4Hd3XXXVVenJJ59MX/3qV1NtbW267777hnJ570hF9ez73/9+qqqqSv/8z/+cnn766XT77benmpqadMcddwzl8t5x3m6/Xqu/WwTv3bs3jRs3Ln34wx9OGzZsSHfddVeqqalJ69atG6ylVISi+vV3f/d3aeLEiX1ec2zevDl1d3cP1nIqTkWFms7OzrRgwYI0cuTIdNxxx6WFCxemzs7OtGfPntTY2Jg+//nP98x94IEH0kknnZRKpVK64IIL0rPPPtvrWI899lg6/fTTU01NTTrrrLPST3/608FeTkUoqmcXXXRRiog+2/HHHz8Uy3rHKvJ37LWEmvIosl/PPPNMOv/881NNTU0aP358uu222wZ7ORWhyJ6tWLEiTZ06NZVKpTR58mQ9K4OB9Oug/l4kp5RSW1tbes973pNqamrSKaeckh588MHBWEJFKapf11xzTb+vOSIi7d69e7CWU3GqUnKDcwAAIF8V85kaAADgnUmoAQAAsibUAAAAWRNqAACArAk1AABA1oQaAAAga0INAACQNaEGAADImlADAABkTagBAACyJtQAAABZE2oAAICs/T84NABRFmC/OgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10, 3))\n",
    "plt.hist(results, bins=15, density=True)\n",
    "plt.axvline(alpha, c=\"red\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a614e2c6-c9e1-4721-a624-af8cc1af777b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "id": "6fd98135-1044-4a8a-a761-3a0069458639",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(200, 100, 2)"
      ]
     },
     "execution_count": 151,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "obs = np.array([\n",
    "    [sim_ci() for i in range(100)] \n",
    "    for j in range(200)\n",
    "])\n",
    "obs.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "id": "73f04aad-597a-405e-bf4e-438611aa6946",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 99.38398146, 100.83749037],\n",
       "       [ 99.27574841, 100.96468649],\n",
       "       [ 98.78765263, 100.73658182],\n",
       "       [ 99.39165426, 101.41489908]])"
      ]
     },
     "execution_count": 156,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "obs[0, 1:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "id": "a4337d90-db1f-41e9-b861-6acd5200c9d6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False,  True, False, ..., False, False, False],\n",
       "       ...,\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False, False]])"
      ]
     },
     "execution_count": 159,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results = np.array([\n",
    "    [ mu < lower or mu > upper for lower, upper in obs[i]]\n",
    "    for i in range(200)\n",
    "])\n",
    "results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "id": "59dd2fa0-aa30-41cf-a3fd-d6eda3397bc3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.04, 0.05, 0.05, 0.02, 0.05, 0.07, 0.02, 0.06, 0.05, 0.05, 0.03,\n",
       "       0.02, 0.02, 0.03, 0.07, 0.06, 0.06, 0.03, 0.04, 0.03, 0.06, 0.03,\n",
       "       0.07, 0.07, 0.05, 0.03, 0.07, 0.05, 0.04, 0.04, 0.02, 0.03, 0.06,\n",
       "       0.05, 0.02, 0.03, 0.04, 0.05, 0.07, 0.  , 0.03, 0.09, 0.07, 0.04,\n",
       "       0.07, 0.02, 0.03, 0.05, 0.06, 0.04, 0.08, 0.06, 0.08, 0.11, 0.05,\n",
       "       0.08, 0.04, 0.09, 0.04, 0.07, 0.03, 0.07, 0.06, 0.08, 0.03, 0.07,\n",
       "       0.06, 0.05, 0.07, 0.07, 0.05, 0.09, 0.03, 0.07, 0.05, 0.03, 0.01,\n",
       "       0.06, 0.12, 0.01, 0.06, 0.09, 0.03, 0.06, 0.07, 0.04, 0.08, 0.04,\n",
       "       0.1 , 0.03, 0.03, 0.09, 0.06, 0.09, 0.03, 0.08, 0.06, 0.01, 0.1 ,\n",
       "       0.05, 0.07, 0.07, 0.09, 0.03, 0.11, 0.05, 0.05, 0.06, 0.08, 0.07,\n",
       "       0.04, 0.03, 0.04, 0.03, 0.03, 0.05, 0.08, 0.08, 0.06, 0.08, 0.05,\n",
       "       0.04, 0.05, 0.07, 0.03, 0.06, 0.03, 0.03, 0.04, 0.05, 0.03, 0.04,\n",
       "       0.05, 0.08, 0.04, 0.05, 0.03, 0.07, 0.05, 0.05, 0.04, 0.04, 0.04,\n",
       "       0.11, 0.06, 0.05, 0.04, 0.08, 0.03, 0.04, 0.05, 0.04, 0.06, 0.08,\n",
       "       0.09, 0.03, 0.03, 0.04, 0.05, 0.05, 0.04, 0.04, 0.07, 0.08, 0.05,\n",
       "       0.  , 0.07, 0.06, 0.09, 0.04, 0.05, 0.08, 0.03, 0.04, 0.03, 0.03,\n",
       "       0.01, 0.01, 0.03, 0.06, 0.07, 0.05, 0.03, 0.03, 0.09, 0.09, 0.08,\n",
       "       0.06, 0.  , 0.05, 0.03, 0.08, 0.07, 0.09, 0.03, 0.02, 0.04, 0.02,\n",
       "       0.02, 0.02])"
      ]
     },
     "execution_count": 154,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results.mean(axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "id": "7c93f4cd-82ee-4731-9b75-637f4bda0780",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False,  True, False, ..., False, False, False],\n",
       "       ...,\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False, False]])"
      ]
     },
     "execution_count": 162,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.apply_along_axis(lambda ci: mu < ci[0] or mu > ci[1], 2, obs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "id": "ae7690a0-2f7d-4cc5-b147-dbcabe2f0126",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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uzax+atmzZrp9OnT+t///lfg9ISEBIWEhCgkJERBQUGqW7eu1fQ33nhDISEhmj17drG2bbdu3bRhwwZ9/PHHlm129OhRtWjRolifBwCUD19HBwAAcA8zZszQfffdpy1btmjGjBlasWKFJKlRo0Zat26dAgMDrZIqSVq+fLmGDRumQYMGWY2vVKmSYmJirMY98sgj+vvf/y5J+t///qeoqCjl5OTIx8cnXyw7d+5U06ZN5ev752luyJAh2rx5s+Li4jRgwAClp6cXuB5z5sxRQkKCJKldu3baunVrge97+OGH843r27evli5dqkuXLkmSdu/ercGDB1umx8XFadmyZYqLi9O9996r77//Xh07dixw/nmqVKmiWbNmqWrVqsrKytJLL72k2bNnq1KlSpIkwzAKbBqYm5srwzDyNSOUJB8fH3l5eRW5XABAyZBYAQDs4vnnn9fkyZMtrxs3biw/Pz+FhISoa9eukqTff/9do0aNknS1GWBCQoL69OmjgQMHlmhZgYGBWrBggdasWaNly5YpICDAMm3x4sV66qmndPDgQYWEhEiSPvnkE6WmpiomJsZSK+Xn51fgvK9NxiRp5cqV6tGjh/bv368mTZoUGtPMmTO1bds2SVeb8wUGBqp69eqqXLmyJCklJUVDhgzR9OnTVbduXc2bN08DBw7Ujz/+qPDwcH3++ed65ZVXdOnSJaWmpurWW2/VAw88oJkzZ1qWkZubq/T0dPXv31+SNG3aNJnNZj366KOFxlVQzdiUKVP0j3/8o9DPAABKjqaAAACb/ec//9H27du1ZcsWy9CsWTO98sorVuP27t2rp59+WpL05ptvqlKlSjKZTPp//+//qWrVqoUODz30UL5lPv7448rIyFCnTp0szQT37dun4cOHa86cOQoNDbW897ffftPevXtlMpm0dOlS+fr65hvymtpd69lnn9Vtt92mAwcOqEuXLhoyZIhOnz4tX19f3Xzzzdq6davl8507d7bUvG3btk3p6em6cOGCKleurKysLPXr10+tWrXSY489JkmKiorSqFGj1LVrVx09elT33HOPvv32W7Vt29by/8SJE5WSkqKUlBTt27dP3t7eMgzDMu7pp5/W0KFDZRiG1bBp0yZLrdTXX3+dbzpJFQDYHzVWAACbzJ8/v8BakUOHDumnn37S1KlT80178803NWvWLFWrVk2SdMcdd+jcuXMlWm5AQIC++OILPfzww4qKitKnn36qhx9+WI899liRNWC5ubkaOnSo5s2bZxk3fPjwAjvLGDBggAzDkJeXl/bs2aORI0dq0KBBWr9+vdLS0qyaIbZo0cLy3NOpU6cUGhqqkydPqnLlyurXr5+SkpI0cuRIffvtt5bPREZG6p577lGXLl20f/9+hYSEaO3atbrvvvuUm5ubr/asODIyMjRy5Ej1799faWlpeumll9SxY0f5+/uXeF4AgOIjsQIA2GTYsGEaNmyYli1bpjNnzljG//e//1Xz5s0VGRlpGRceHq5evXppzJgxatmypY4dO2bTsv38/LRq1SoNGjRILVq0UNeuXfM9x2WruXPnaunSpZo6daqWL19ueX4qNTXVqgnitU6dOqVq1app165dqly5sgYNGqSQkBBNmDAh33ufeeYZjRkzRr6+vlq+fLmCgoK0bds2dejQQatWrdIdd9wh6eqzVGlpaQoMDLR89vTp0/lieOqpp3TvvfcqICBAp06dUps2bfTkk0/apUdEAEDhaAoIALCLadOmqXLlyoqMjFRkZKRiYmI0dOhQy+vAwEBLhxQHDhywqsnatGmTpSe9goaePXsWutwrV67owoULCgoK0s6dO3XgwIHrxvrRRx/Jz8/PMlxbe/VXjz76qLp27aouXbrolVdeUUhIiNLT03X58mVLjdtfpaenq0uXLpo0aZKmT5+uc+fOKTw8XEuXLtUjjzyi+++/XytWrNB///tf/fzzz6pVq5auXLmi1157TcOGDVNUVJRefvllvffee5Zmf/v371dAQIDldUpKSr6k6o033tDevXs1ceJEy7jnn39ex44d07///e/rbhcAQOlRYwUAsJtp06YV2ilEWlqapSOHRYsW6eLFi5ZpUVFRlpqgkkhOTtZ9992nzMxMHTx4UMOHD9edd96pdevWFdnRREFNAQuSnZ0tb29vvfTSS+rbt6+SkpKUnZ2tXbt2KTAwUFWqVMnX656vr69++eUXy+s+ffrIz89PPXv21NixY+Xj46MPP/xQQ4YM0fLlyxUbG6vnn39eixYtUpMmTVSvXj0dO3ZMjz32mOV5rOKYOXOmZs6cqR9//FEVKlSwjPfx8dGSJUvUrl07ZWdna/z48cWeJwCg+EisAAB2Ex0dbdVpxLVOnDihn376SZIUHBxslVgdP35cERERCg4Ozve5zMxMDRw4MF+t0v79+9WzZ0/dcMMNWrNmjYKDg7V48WI9+OCDluTqlltuKfW6ZGRkXPe5pIoVK+Yb9+uvv2rNmjWKj4/X4cOHZTab5e/vr4ceekiffPKJPvzwQ/3tb39TUlKSFixYoCeeeEKS1KpVK7Vv316bN2+WJCUlJal69er5tsW1iWv9+vW1e/duvfrqq4qJidGGDRtUu3btfDGFhYVpzZo16tixo/bv36/33ntPQUFBJd4mAIDC0RQQAGA3zZo1s/ww8F+H2267rcjPBgcH69KlS/mGKVOm5HtvcnKyOnTooKZNm2rdunWWhKxChQpauXKlGjdurGnTphW6rPnz51v1CDhv3jx5e1ufEv38/PL1pmcYhlauXClfX189++yzSk1NzTf9t99+04kTJ9SzZ099+umnSk9PtyRWX375pby9vfXkk09q8+bN2rVrl/r06SNJuvXWW3XzzTdbbY+MjAzL8NtvvykgIMBq3O7duzVv3jzNnj1b69at09SpUxUYGKjAwEBNmjRJc+fOtbx+/fXXLb/jtWTJkmLvUwBA8VBjBQCwmylTphSrKaCt/Pz8FBsbq6ZNm0q6WruUx8vLSytWrJCvr68yMzNlMpmsPlu/fn198MEHJWpmJ12tcXvttde0dOlSTZs2TWvWrFGtWrU0fPhwPfPMM6pRo4YkqXv37urevbvlc5cvX5bZbFZYWJj27t0rs9msd955R6+++qoGDhxY6PYqrmHDhqlbt26KiIiwSpgmT56sU6dOadasWVbvT0hIsHmZAID8SKwAAHazdOlSNWrUqMBpCQkJeu655wr9bFJSkuUHfa+V1xTwWt26dStWPCaTySrpkqQOHTqoQ4cOVuMuXbqknJwcVaxYUT///LMCAwNlGIZ27dqlH374QatXr9Z3332nBx98UPHx8WrQoIFGjx6tuLg4TZ48WXXq1FG/fv00ZswY3XbbbTp27JgqVaqkK1eu6Ndff9Ubb7yhVatWWS0zIyNDvr6+mj9/vjp06KCvvvqqWOv0V97e3oqIiCj2+0mqAKBskFgBAGzSt29f7d+/XwcOHFCvXr3y1RDlSU9P14kTJxQZGakHHnhAw4YNs5qe1xTwr9555x3t2rXL8vrUqVN2jV+SPvjgA7344ouSpHr16mnFihVKSUlRjx49FBYWpujoaM2ZM0d16tSx+lzLli312WefadeuXZo8ebJmzpypefPm6auvvtLw4cNVsWJFPf3003r77bcL/AFiAID78DIMw3B0EAAAOIPc3FyrZ61ycnKsfgS4pPJ+XBgA4P5IrAAAAADARvQKCAAAAAA2IrECAAAAABuRWAEAAACAjUisAAAAAMBGJFYAAAAAYCMSKwAAAACwEYkVAAAAANiIxAoAAAAAbERiBQAAAAA2IrECAAAAABv9f5sw7vUffJ5hAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1000x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(10,3))\n",
    "for i, ci in enumerate(obs[1]):\n",
    "    c = 'k' if ci[0] <= mu <= ci[1] else 'red'\n",
    "    ax.plot([i, i], [ci[0], ci[1]], c=c)\n",
    "    # ax.axvline(i, ymin=ci[0], ymax=ci[1], c='b')\n",
    "ax.set_ylim(obs.min(), obs.max())\n",
    "ax.axhline(y=100)\n",
    "ax.set_xlabel('置信区间实验样本'); ax.set_ylabel('$\\mu$ 估计值');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f73f855c-0840-4dcf-9f1a-411681946226",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
